<?php
namespace app\api\controller;

class Alipay extends \think\Controller
{
    public function index()
    {
        /**
         * 电脑网站支付
         * @param array  $params 支付参数, 具体如下
         * @param string $params['subject'] 订单标题
         * @param string $params['out_trade_no'] 订单商户号
         * @param float  $params['total_amount'] 订单金额
         */
        \alipay\Pagepay::pay($params);


        /**
         * 手机网站支付
         * @param array  $params 支付参数, 具体如下
         * @param string $params['subject'] 订单标题
         * @param string $params['out_trade_no'] 订单商户号
         * @param float  $params['total_amount'] 订单金额
         */
        \alipay\Wappay::pay($params);


        /**
         * 交易查询接口
         * 商户订单号(out_trade_no) or 支付宝交易号(trade_no) 二选一
         */
        \alipay\Query::exec($query_no);

        
        /**
         * 交易退款接口
         * @param  array $params 退款参数, 具体如下
         * @param string $params['trade_no']/$params['out_trade_no'] 商户订单号或支付宝单号其中之一
         * @param string $params['out_request_no'] 商户退款号(可选, 如同一笔交易多次退款, 则必填)
         * @param float  $params['refund_amount'] 退款金额
         */
        \alipay\Refund::exec($params);

        
        /**
         * 退款统一订单查询
         * @param  array $params 退款查询参数, 具体如下:
         * @param string $params['trade_no']/$params['out_trade_no'] 商户订单号或支付宝单号其中之一
         * @param string $params['out_request_no'] 可空, 为空时, 退款号为订单号
         */
        \alipay\RefundQuery::exec($params);

        
        /**
         * 交易关闭接口
         * 商户订单号(out_trade_no) or 支付宝交易号(trade_no) 二选一
         */
        \alipay\Close::exec($query_no);

        
        /**
         * 查询账单下载地址接口
         * @param  string $bill_type trade/signcustomer, trade指商户基于支付宝交易收单的业务账单；signcustomer是指基于商户支付宝余额收入及支出等资金变动的帐务账单；
         * @param  string $bill_date 日期, 单格式为yyyy-MM-dd，月账单格式为yyyy-MM
         * 注意：
         * 1.当日或者当月日期为无效日期，毕竟没有过当日或者当月
         * 2.如果是2017年7月，请填写2017-07，不能为2017-7
         */
        \alipay\Datadownload::exec($bill_type, $bill_date);

        
        /**
         * 验签
         * 异步通知校检, 包括验签和数据库信息与通知信息对比
         * @param array  $params 数据库中查询到的订单信息
         * @param string $params['out_trade_no'] 商户订单
         * @param float  $params['total_amount'] 订单金额
         */
        \alipay\Notify::check($params);

        // 通知处理步骤建议
        // 验签
        // 判断订单状态
        // 进行业务操作
    }
}